#!/bin/bash

# 停止系统 PostgreSQL 服务脚本

echo "停止系统 PostgreSQL 服务..."

# 检查当前 PostgreSQL 状态
echo "当前 PostgreSQL 进程："
ps aux | grep postgres | grep -v grep

echo ""
echo "当前端口 5432 占用情况："
netstat -tln | grep :5432

echo ""
echo "尝试停止 PostgreSQL 服务..."

# 尝试不同的停止方法
if systemctl --user is-active postgresql > /dev/null 2>&1; then
    echo "使用 systemctl --user 停止服务..."
    systemctl --user stop postgresql
    systemctl --user disable postgresql
elif pgrep -f postgres > /dev/null; then
    echo "找到 PostgreSQL 进程，尝试停止..."
    # 获取 PostgreSQL 进程 ID
    POSTGRES_PIDS=$(pgrep -f postgres)
    echo "PostgreSQL 进程 ID: $POSTGRES_PIDS"
    
    # 尝试优雅停止
    for pid in $POSTGRES_PIDS; do
        echo "停止进程 $pid..."
        kill -TERM $pid 2>/dev/null
    done
    
    # 等待进程停止
    sleep 3
    
    # 检查是否还有进程运行
    if pgrep -f postgres > /dev/null; then
        echo "进程仍在运行，强制停止..."
        for pid in $(pgrep -f postgres); do
            kill -KILL $pid 2>/dev/null
        done
    fi
else
    echo "未找到运行中的 PostgreSQL 服务"
fi

# 等待端口释放
echo "等待端口 5432 释放..."
sleep 2

# 检查结果
if netstat -tln | grep :5432 > /dev/null; then
    echo "❌ 端口 5432 仍被占用："
    netstat -tln | grep :5432
    echo ""
    echo "请手动检查并停止占用端口的进程"
else
    echo "✅ 端口 5432 已释放，可以启动 Docker PostgreSQL"
fi

echo ""
echo "当前进程状态："
ps aux | grep postgres | grep -v grep || echo "没有 PostgreSQL 进程运行"